/**
 * Copyright (c) 2009  Collaborative Development Group, C.S. Dept., University of Bari
 *
 * All rights reserved. This program and the accompanying materials are made available under
 * the terms of the Eclipse Public License v1.0  which accompanies this distribution, and is 
 * available at http://www.eclipse.org/legal/epl-v10.html
 */
package it.uniba.di.cdg.penelope.ui.annotation;

import it.uniba.di.cdg.penelope.ui.AbstractPresentationModel;

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Marker interface for Controller classes.
 */
@Retention( RetentionPolicy.RUNTIME )
@Target( ElementType.TYPE )
@Inherited
public @interface Presenter {
	/**
	 * The MVP group id.
	 * @return the mvp group id
	 */
	String value();
	/**
	 * The properties of the {@link AbstractPresentationModel}-derived model that the Presenter is interested in
	 * being notified about. If none is specified, the {@link Presenter}-annotated instance within the MVP triplet 
	 * will be notified on all property changes.
	 * @return the properties that the presenter is interested in listening to. If not set, all property change 
	 * events will be notified.
	 */
	String[] events() default {};
}
